from bs4 import BeautifulSoup

html_content = '''
<!DOCTYPE html>
<html>
<head>
    <title>高级示例页面</title>
</head>
<body>
    <div class="header">
        <h1>高级网页爬取</h1>
        <p>学习如何使用 Python 爬取复杂的网页。</p>
    </div>
    <div class="content" id="main-content">
        <p class="intro">这是一个介绍段落。</p>
        <div class="article" data-category="technology">
            <h2>理解 HTML 结构</h2>
            <p>HTML 是网页的基础，学习如何操作它至关重要。</p>
            <a href="https://example.com/html-guide">阅读更多</a>
        </div>
        <div class="article" data-category="programming">
            <h2>使用 BeautifulSoup 爬取数据</h2>
            <p>BeautifulSoup 是一个流行的 Python HTML 解析库。</p>
            <a href="https://example.com/bs-guide">阅读更多</a>
        </div>
    </div>
    <div class="footer">
        <p>联系我们：<a href="mailto:support@example.com">support@example.com</a></p>
    </div>
</body>
</html>
'''

# 创建 BeautifulSoup 对象
soup = BeautifulSoup(html_content, 'html.parser')

# （1）提取页面标题
page_title = soup.title.string
print("页面标题:", page_title)

# （2）提取 class="header" 下的 h1 内容
header_h1 = soup.find('div', class_='header').h1.string
print("header 中的 h1 内容:", header_h1)

# （3）提取所有 p 标签的内容及其父 div 的 class 或 id
for p in soup.find_all('p'):
    parent_div = p.find_parent('div')
    if parent_div:
        div_class = parent_div.get('class', ['无class'])[0]
        div_id = parent_div.get('id', '无id')
        print("p内容:", p.text.strip(), "| 父 div class:", div_class, "| 父 div id:", div_id)
    else:
        print("p内容:", p.text.strip(), "| 无父 div")

# （4）提取每个文章 div 的 data-category 属性值
for article in soup.find_all('div', class_='article'):
    category = article.get('data-category')
    print("文章类别:", category)

# （5）提取所有链接及其文本
for a in soup.find_all('a'):
    link = a.get('href')
    text = a.text.strip()
    print("链接:", link, "| 文本:", text)